package t1;

/**
 * @author ：陈奕安（3048279304@qq.com）
 * @date ：Created in 2025/5/3 20:16
 * @description：
 * @modified By                  ：
 * @version:
 */
//多态条件：
    //1.必须在继承下 2.子类必须要对父类中的方法进行重写 3.通过引用父类调用重写的方法
public class TestDemo {
    public static Animal func2()
    {
        Dog dog=new Dog("旺财",10);
        return dog;
    }
    public static void func(Animal animal)
    {
        animal.eat();//向上传参
    }
//向下转型
    public static void main(String[] args) {
        Animal animal=new Bird("小鸟",2);
        Bird bird=(Bird)animal;
        bird.fly();
        Animal animal12=new Dog("诞生皮",3);
        if (animal12 instanceof Bird){
            //instanceof判断是否为后者引用实例
            Bird bird2=(Bird) animal12;
            bird2.fly();
        }
        else {
            System.out.println("转型失败");
        }
    }
    public static void main3(String[] args) {
        Dog dog=new Dog("旺财",10);
        func(dog);
        System.out.println("========");
        Bird bird=new Bird("小鸟",2);
       func(bird);
    }
    public static void main2(String[] args) {
       Animal animal=new Dog("旺财",10);
       Dog dog=new Dog("旺财",10);
//       func(dog);
//       Animal animal12=func2();
        dog.bark();
        animal.eat();//父类引用不能直接调用子类特有的方法
        //向上转型可以让代码更加灵活
    }

}
